from random import *
from Celula import *

from pygame.locals import *
import pygame
pygame.font.init()        

class Campo:
	
	def __init__(self, altura, largura, qnt_bombas):
		self.matriz = []
		self.altura = altura
		self.largura = largura
		self.qnt_bombas = qnt_bombas
		
	def inicializa_campo(self):
		for i in range(self.altura):
			linha = []
			for j in range(self.largura):
				linha.append(Celula())
			self.matriz.append(linha)
			
	def imprime_campo(self):
		matriz = []
		for i in range(self.altura):
			linha = []
			for j in range(self.largura):
				linha.append(str(self.matriz[i][j]))
			matriz.append(linha)
		return matriz
		
	def set_bombas(self):
		while self.qnt_bombas > 0:
			posicaoX, posicaoY = randint(0, self.altura - 1), randint(0, self.largura - 1)
			if not (self.matriz[posicaoX][posicaoY].get_ehBomba()):
				self.matriz[posicaoX][posicaoY].set_ehBomba()
				self.matriz[posicaoX][posicaoY].set_conteudo("B")
				self.qnt_bombas -= 1
	
	def calcula_redondeza(self, i, j):
		contador = 0
		#Primeira linha
		if i == 0:
			#Primeira coluna
			if j == 0:
				if (self.matriz[i][j+1].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j+1].get_ehBomba()):
					contador +=1
				if contador == 0:
					return " "
				return contador
			#Ultima coluna
			elif j == self.largura - 1:
				if (self.matriz[i][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j-1].get_ehBomba()):
					contador +=1
				if contador == 0:
					return " "
				return contador
			#Qualquer coluna
			else:
				if (self.matriz[i][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i][j+1].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j+1].get_ehBomba()):
					contador +=1
				if contador == 0:
					return " "
				return contador
		#Ultima linha
		elif i == self.altura - 1:
			#Primeira coluna
			if j == 0:
				if (self.matriz[i-1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j+1].get_ehBomba()):
					contador +=1
				if (self.matriz[i][j+1].get_ehBomba()):
					contador +=1
				if contador == 0:
					return " "
				return contador
			#Ultima coluna
			elif j == self.largura - 1:
				if (self.matriz[i-1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i][j-1].get_ehBomba()):
					contador +=1
				if contador == 0:
					return " "
				return contador
			#Qualquer coluna
			else:
				if (self.matriz[i][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j+1].get_ehBomba()):
					contador +=1
				if (self.matriz[i][j+1].get_ehBomba()):
					contador +=1
				if contador == 0:
					return " "
				return contador
		#Primeira coluna
		if j == 0:
				if (self.matriz[i][j+1].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j+1].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j].get_ehBomba()):
					contador += 1
				if (self.matriz[i-1][j+1].get_ehBomba()):
					contador += 1
				if contador == 0:
					return " "
				return contador		
		#Ultima coluna
		elif j == self.largura - 1:
				if (self.matriz[i][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j].get_ehBomba()):
					contador +=1
				if (self.matriz[i-1][j-1].get_ehBomba()):
					contador +=1
				if (self.matriz[i+1][j-1].get_ehBomba()):
					contador +=1
				if contador == 0:
					return " "
				return contador
		
		#O resto do campo
		if (self.matriz[i][j+1].get_ehBomba()):
			contador +=1
		if (self.matriz[i][j-1].get_ehBomba()):
			contador +=1
		if (self.matriz[i-1][j+1].get_ehBomba()):
			contador +=1
		if (self.matriz[i-1][j-1].get_ehBomba()):
			contador +=1
		if (self.matriz[i-1][j].get_ehBomba()):
			contador +=1
		if (self.matriz[i+1][j+1].get_ehBomba()):
			contador +=1
		if (self.matriz[i+1][j].get_ehBomba()):
			contador +=1
		if (self.matriz[i+1][j-1].get_ehBomba()):
			contador +=1

		if contador == 0:
			return " "
		return contador		
		
	def calcula_numeros(self):
		for i in range(self.altura):
			for j in range(self.largura):
				if not (self.matriz[i][j].get_ehBomba()):
					self.matriz[i][j].set_conteudo(str(self.calcula_redondeza(i,j)))
		
